package model

import (
	"gitee.com/chunanyong/zorm"
	"github.com/cespare/xxhash/v2"
	"strconv"
)

const ShortRouteStructTableName = "t_link_route"

type ShortRouteStruct struct {
	//引入默认的struct,隔离IEntityStruct的方法改动
	zorm.EntityStruct

	//Id ID
	Id int64 `column:"id"`

	//Gid
	Gid int64 `column:"gid"`

	//ShortId 短链接标识
	ShortId string `column:"short_id"`
}

// GetTableName 获取表名称
// IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *ShortRouteStruct) GetTableName() string {
	// 分表逻辑
	// 使用 ShortId 进行分表
	n := xxhash.Sum64String(entity.ShortId)
	s := strconv.FormatUint(n%20, 10)

	return ShortRouteStructTableName + "_" + s
}

// GetPKColumnName 获取数据库表的主键字段名称.因为要兼容Map,只能是数据库的字段名称
// 不支持联合主键,变通认为无主键,业务控制实现(艰难取舍)
// 如果没有主键,也需要实现这个方法, return "" 即可
// IEntityStruct 接口的方法,实体类需要实现!!!
func (entity *ShortRouteStruct) GetPKColumnName() string {
	//如果没有主键
	//return ""
	return "id"
}
